module EventMachine
  module Smsified
    module Helpers
      private
      
      ##
      # Camelcases the options
      def camelcase_keys(options)
        options = options.clone
        
        if options[:destination_address]
          options[:destinationAddress] = options[:destination_address]
          options.delete(:destination_address)
        end
        
        if options[:notify_url]
          options[:notifyURL] = options[:notify_url]
          options.delete(:notify_url)
        end
        
        if options[:client_correlator]
          options[:clientCorrelator] = options[:client_correlator]
          options.delete(:client_correlator)
        end
        
        if options[:callback_data]
          options[:callbackData] = options[:callback_data]
          options.delete(:callback_data)
        end
        
        options
      end
      
      ##
      # Builds the necessary query string
      def build_query_string(options)
        options = camelcase_keys(options)
        
        query = ''

        options.each do |k,v|
          if k == :address
            if RUBY_VERSION.to_f == 1.9
              if v.instance_of?(String)
                v.each_line { |address| query += "#{ '&' if query != '' }address=#{CGI.escape address}" }
              else
                v.each { |address| query += "#{ '&' if query != '' }address=#{CGI.escape address}" }
              end
            else
              v.each { |address| query += "#{ '&' if query != '' }address=#{CGI.escape address}" }
            end
          else
            query += "#{ '&' if query != '' }#{k.to_s}=#{CGI.escape v}"
          end
        end

        query
      end
    end
  end
end
